#version 330 core
layout (location = 0) in vec3 aPos;// pos 0 is for pos data.
layout (location = 1) in vec3 aNormVec; // 该顶点在X分量上的法向量（Damn，无非即使(1,0,0)或(-1,0,0)嘛)
layout (location = 2) in vec4 aColor;// pos 2 is for color data.

uniform mat4 axis_model;
uniform mat4 axis_view;
uniform mat4 axis_projection;

out vec3 vertexColor;
out vec3 FragPos; // 告诉片段着色器，像素的世界坐标

void main()
{
   gl_Position = axis_projection * axis_view * axis_model * vec4(aPos, 1.0); // (x,y,z,w), w 是相机到荧幕的距离用于透视除法，这里乘上了 MVP 矩阵使得它进入了裁剪空间（后续变NDC）
   vertexColor = vec3(aColor);
   FragPos = vec3(axis_model * vec4(aPos, 1.0)); // 注意这里使用vec3把w分量消除，因为片段不需要对坐标进行变换，（已经完成透视除法）
}
